package com.cheng.algorithm.sort;

import java.util.Arrays;

/**
 * @User Administrator
 * @Classname SelectSort
 * @Project Data-structure-and-algorithm
 * @Description 选择排序算法代码实现
 * 介绍：
 * 选择式排序也属于内部排序法，是从欲排序的数据中，按指定的规则选出某一中元素，再依规定交换位置后达到排序的目的。
 * 基本思想：
 * 每一轮排序通过循环，选出最小的数
 * 1、第一次排序，从数组中选出一个最小的，放到第一个位置
 * 2、第二次排序，从第二个数到最后一个数中，选择最小的数，放到第二个位置
 * 3、以此类推，直到只剩一个数，排序完毕
 *
 * @Author wpcheng
 * @Create 2021-08-03-22:39
 * @Version 1.0
 */
public class SelectSortPlus {
    public static void main(String[] args) {
        int[] arr = {101,34,119,1,56,58,12,150,110};
        System.out.println("排序前:");
        System.out.println(Arrays.toString(arr));
        selectSort(arr);
        System.out.println("排序后:");
        System.out.println(Arrays.toString(arr));

    }

    /**
     *
     * @param arr
     */
    public static void selectSort(int[] arr ){

        for (int i = 0; i < arr.length - 1; i++) {
            int minIndex = i;
            int min = arr[i];
            for (int j = i; j < arr.length; j++) {
                if (min > arr[j]){
                    min = arr[j];
                    minIndex = j;
                }
            }
            if (minIndex != i ){
                arr[minIndex] = arr[i];
                arr[i] = min;
            }
        }




    }

}
